import static org.junit.Assert.*;

import java.util.ArrayList;

import org.junit.Test;


public class PanierTest {

	@Test
	public void testPanier() {
		Panier p1=new Panier();
		assertNotNull("Test du constructeur du panier ",p1);
		assertEquals("Test du constructeur 2",p1.afficheInfos(),"");
	}

	@Test
	public void testPanierAvecNom() {
		Panier p1=new Panier("Papounier");
		assertNotNull("Test du constructeur du panier ",p1);
		assertEquals("Test du constructeur 2",p1.afficheInfos(),"Nom du panier : Papounier\n");
		assertTrue("Test du nom du panier", "Papounier".equals(p1.getNomPanier()));
	}
	
	@Test
	public void testAddChoux() {
		Panier p1=new Panier();
		Chou chou = new Chou("Pipo", 180);
		p1.addChoux(chou);
		assertEquals("Test de l'ajout de choux",p1.afficheInfos(),"nom : Pipo poids : 180\n");
	}

	@Test
	public void testAddChouxNull() {
		Panier p1=new Panier();
		p1.addChoux(null);
		assertEquals("Test de l'ajout de choux",p1.afficheInfos(),"");
	}
	
	@Test
	public void testAddChouxVide() {
		Panier p1=new Panier();
		Chou chou = new Chou();
		p1.addChoux(chou);
		assertEquals("Test de l'ajout de choux",p1.afficheInfos(),"nom :  poids : 0\n");
	}
	
	@Test
	public void testAfficheInfos() {
		Panier p1=new Panier();
		Chou chou = new Chou("Pipo", 180);
		Chou chou2 = new Chou("Popi", 130);
		p1.addChoux(chou);
		p1.addChoux(chou2);
		assertEquals("Test de l'affichage de choux",p1.afficheInfos(),"nom : Pipo poids : 180\nnom : Popi poids : 130\n");
	}
	
	@Test
	public void testAfficheInfosAvecNomChoux() {
		Panier p1=new Panier();
		p1.setNomPanier("Billy");
		Chou chou = new Chou("Pipo", 180);
		Chou chou2 = new Chou("Popi", 130);
		p1.addChoux(chou);
		p1.addChoux(chou2);
		assertEquals("Test de l'affichage de choux",p1.afficheInfos(),"Nom du panier : Billy\nnom : Pipo poids : 180 mon Panier : Billy\nnom : Popi poids : 130 mon Panier : Billy\n");
	}
	
	@Test
	public void testAfficheInfosAvecNomChouxEspace() {
		Panier p1=new Panier();
		p1.setNomPanier("                  Billy                 ");
		Chou chou = new Chou("Pipo", 180);
		Chou chou2 = new Chou("Popi", 130);
		p1.addChoux(chou);
		p1.addChoux(chou2);
		assertEquals("Test de l'affichage de choux",p1.afficheInfos(),"Nom du panier : Billy\nnom : Pipo poids : 180 mon Panier : Billy\nnom : Popi poids : 130 mon Panier : Billy\n");
	}
	
	@Test
	public void testAfficheListeVideChoux() {
		Panier p1=new Panier();
		assertEquals("Test de l'affichage de choux",p1.afficheInfos(),"");
	}

	@Test
	public void testGetListeChoux(){
		Panier panier = new Panier();
		ArrayList<Chou> lstChoux = new ArrayList<Chou>();
		Chou choux;
		for(int i=0; i<3; i++){
			choux = new Chou("choux"+i, i);
			lstChoux.add(choux);
		}
		
		panier.setLstChoux(lstChoux);
		for(int i=0; i<3; i++){
			assertTrue("Test de la liste des choux " + i, lstChoux.get(i) == panier.getLstChoux().get(i));
		}
	}
	
	@Test
	public void testGetListeVideChoux(){
		Panier panier = new Panier();
		assertTrue("Test du nombre de choux d'une liste vide", panier.getLstChoux().size() == 0);
	}
	
	@Test
	public void testGetListeNullChoux(){
		Panier panier = new Panier();
		panier.setLstChoux(null);
		assertEquals("Test de la liste null de choux", null, panier.getLstChoux());
	}
	
	@Test
	public void testGetNomPanier(){
		Panier panier = new Panier();
		panier.setNomPanier("Boubou");
		assertEquals("Test du nom du panier", "Boubou", panier.getNomPanier());
	}
	
	@Test
	public void testGetNomVidePanier(){
		Panier panier = new Panier();
		panier.setNomPanier("");
		assertEquals("Test du nom du panier", "", panier.getNomPanier());
	}
	
	@Test
	public void testGetNomNullPanier(){
		Panier panier = new Panier();
		panier.setNomPanier(null);
		assertEquals("Test du nom du panier", null, panier.getNomPanier());
	}
		
	@Test
	public void testRetireChoux()
	{
		Panier p1= new Panier();
		Panier p2= new Panier();
		
		Chou c = new Chou("Pipo", 180);
		
		p1.addChoux(c);
		c.getMonPanier();
		assertTrue("Le panier du choux est p1", c.getMonPanier()==p1);
		assertFalse("Le panier du choux n'est pas p2", c.getMonPanier()==p2);
		
		p2.addChoux(c);
		c.getMonPanier();
		assertFalse("Le panier du choux n'est pas p1", c.getMonPanier()==p1);
		assertTrue("Le panier du choux est p2", c.getMonPanier()==p2);
		
		assertEquals("Test de l'ajout dans le panier 2",p2.afficheInfos(),"nom : Pipo poids : 180\n");
		assertEquals("Test retrait du choux de p1",p1.retireChoux(c),false);
	
	}
	
	
	
}
